package echecs.metier.materiel;

/** Packages utilises par ce package
 *  Au sein de ce projet, seul metier.plateau.* est autorise
 */
import echecs.metier.plateau.*;

import javax.swing.*;

/**
 * Titre :
 * Description :
 * Copyright :    Copyright (c) 2002
 * Societe : Fabrice Tranchand
 * @author Fabrice Tranchand
 * @version 1.0
 */

public class Dame extends Piece
{
  // -----------------------------------------------------------------
  //     constantes de la classe
  // -----------------------------------------------------------------
  private static final Icon DAME_BLANC = new ImageIcon("dameB.gif");
  private static final Icon DAME_NOIR = new ImageIcon("dameN.gif");

  // -----------------------------------------------------------------
  //     constructeur
  // -----------------------------------------------------------------
  // *****************************************************************
  //     le premier parametre designe la couleur de la piece
  //     le second parametre designe la case initiale de la piece
  // *****************************************************************
  public Dame(int couleur_p, Case caseInitiale_p)
  {
    super(couleur_p, caseInitiale_p);
  }



  // ----------------------------------------------------------------
  //     les methodes publiques
  // ----------------------------------------------------------------
  // *****************************************************************
  //     retourne l'icone de la piece
  // *****************************************************************
  public Icon getFigure()
  {
    Icon retour = null;
    if (getCouleur() == Couleur.BLANC)
      retour = DAME_BLANC;
    else
      retour = DAME_NOIR;
    return retour;
  }
  // *****************************************************************
  //     retourne true si la piece peut se deplacer sur la case en
  //     parametre, en respectant le deplacement de la piece
  // *****************************************************************
  //modif : ajout de memeLigne(nouvelle_p)
  public boolean peutBouger(Case nouvelle_p)
  {
    boolean retour = false;
    if ( getPosition().memeColonne(nouvelle_p) ||
         getPosition().memeDiagonale(nouvelle_p) ||
         getPosition().memeLigne(nouvelle_p))
      retour = true;
    return retour;
  }
  
  // *****************************************************************
  //     modif : ajout de cette fonction pour les tests structurels
  // *****************************************************************
  public boolean peutBouger(Case nouvelle_p, Dame d)
  {
    boolean retour = false;
    if ( d.getPosition().memeColonne(nouvelle_p) ||
         d.getPosition().memeDiagonale(nouvelle_p) ||
         d.getPosition().memeLigne(nouvelle_p))
      retour = true;
    return retour;
  }
  
  // *****************************************************************
  //     retourne l'abreviation de la piece utilisee dans les notations
  // *****************************************************************
  public String getType() { return "D"; }
}
